/**
 * Pagination 组件的主题配置
 * 
 * 基于企业级设计规范 (Pagination.json) 的完整配置
 * 包含所有分页样式定义
 */

import type { ComponentToken } from 'antd/es/pagination/style';

// ========== 设计 Token 常量 ==========

/**
 * 分页项相关 Token
 */
const ITEM_TOKENS = {
  // 背景颜色
  bg: '#ffffff',
  linkBg: '#ffffff',
  activeBg: '#ffffff',
  inputBg: '#ffffff',
  activeBgDisabled: 'rgba(0, 0, 0, 0.06)',
  
  // 尺寸
  size: {
    default: 32,
    small: 24,
  },
  
  // 禁用状态颜色
  activeColorDisabled: 'rgba(0, 0, 0, 0.25)',
  
  // 迷你选项
  miniOptionsSizeChangerTop: 0,
} as const;

/**
 * Pagination 完整主题配置
 * 
 * 根据设计规范文件 Pagination.json 定义的企业级分页样式
 * 涵盖所有分页状态和尺寸的完整配置
 * 
 * @example
 * ```tsx
 * <ConfigProvider theme={{ components: { Pagination: paginationThemeConfig } }}>
 *   <Pagination defaultCurrent={1} total={50} />
 *   <Pagination size="small" defaultCurrent={1} total={50} />
 *   <Pagination 
 *     total={500} 
 *     showSizeChanger 
 *     showQuickJumper 
 *   />
 * </ConfigProvider>
 * ```
 */
export const paginationThemeConfig: Partial<ComponentToken> = {
  // ========== 背景配置 ==========
  itemBg: ITEM_TOKENS.bg,
  itemLinkBg: ITEM_TOKENS.linkBg,
  itemActiveBg: ITEM_TOKENS.activeBg,
  itemInputBg: ITEM_TOKENS.inputBg,
  itemActiveBgDisabled: ITEM_TOKENS.activeBgDisabled,
  
  // ========== 尺寸配置 ==========
  itemSize: ITEM_TOKENS.size.default,
  itemSizeSM: ITEM_TOKENS.size.small,
  
  // ========== 禁用状态配置 ==========
  itemActiveColorDisabled: ITEM_TOKENS.activeColorDisabled,
  
  // ========== 迷你选项配置 ==========
  miniOptionsSizeChangerTop: ITEM_TOKENS.miniOptionsSizeChangerTop,
};

/**
 * 获取 Pagination 主题配置
 * 
 * 支持部分覆盖默认配置，可以基于完整的设计规范进行定制
 * 
 * @param customConfig 自定义配置（可选）
 * @returns 合并后的主题配置
 * 
 * @example
 * ```tsx
 * // 基于设计规范的定制
 * const myPaginationTheme = getPaginationTheme({
 *   itemBg: '#f5f5f5',                 // 自定义分页项背景色
 *   itemSize: 36,                      // 自定义分页项尺寸
 *   itemSizeSM: 28,                    // 自定义小尺寸分页项
 * });
 * 
 * <ConfigProvider theme={{ components: { Pagination: myPaginationTheme } }}>
 *   <Pagination defaultCurrent={1} total={50} />
 * </ConfigProvider>
 * ```
 */
export const getPaginationTheme = (
  customConfig?: Partial<ComponentToken>
): Partial<ComponentToken> => {
  return {
    ...paginationThemeConfig,
    ...customConfig,
  };
};

/**
 * 导出 Pagination 组件的 Token 类型
 * 方便 TypeScript 类型检查和开发时的智能提示
 */
export type { ComponentToken as PaginationComponentToken } from 'antd/es/pagination/style';

